/** * BSD-style license; for more info see http://pmd.sourceforge.net/license.html */ package test.net.sourceforge.pmd.symboltable; import junit.framework.TestCase; import net.sourceforge.pmd.ast.ASTVariableDeclaratorId; import net.sourceforge.pmd.ast.SimpleNode; import net.sourceforge.pmd.symboltable.ClassScope; import net.sourceforge.pmd.symboltable.NameOccurrence; import net.sourceforge.pmd.symboltable.VariableNameDeclaration; public class ClassScopeTest extends TestCase { public void testContains() { ClassScope s = new ClassScope("Foo"); ASTVariableDeclaratorId node = new ASTVariableDeclaratorId(1); node.setImage("bar"); s.addDeclaration(new VariableNameDeclaration(node)); assertTrue(s.getVariableDeclarations(false).keySet().iterator().hasNext()); } public void testCantContainsSuperToString() { ClassScope s = new ClassScope("Foo"); SimpleNode node = new SimpleNode(1); node.setImage("super.toString"); assertTrue(!s.contains(new NameOccurrence(node, node.getImage()))); } public void testContainsStaticVariablePrefixedWithClassName() { ClassScope s = new ClassScope("Foo"); ASTVariableDeclaratorId node = new ASTVariableDeclaratorId(1); node.setImage("X"); s.addDeclaration(new VariableNameDeclaration(node)); SimpleNode node2 = new SimpleNode(2); node2.setImage("Foo.X"); assertTrue(s.contains(new NameOccurrence(node2, node2.getImage()))); } public void testClassName() { ClassScope s = new ClassScope("Foo"); assertEquals("Foo", s.getClassName()); } // FIXME - these will break when this goes from Anonymous$1 to Foo$1 public void testAnonymousInnerClassName() { ClassScope s = new ClassScope(); assertEquals("Anonymous$1", s.getClassName()); s = new ClassScope(); assertEquals("Anonymous$2", s.getClassName()); } }